<?php

namespace app\home\controller;

use think\Controller;
use app\common\model\Goods as Goodslist;


class Goods extends Base
{
    public function list($id){
        // dump($id);
        //查询分类下的商品
        $datas =Goodslist::where('cate_id',$id)->paginate(10);
        // dump($datas);
        //查询分类信息
        $cate_info=\app\common\model\Category::find($id);
        return $this->fetch('list',['goodslist'=>$datas,'cate_info'=>$cate_info]);
    }
    public function item(){
        $id=input('id');
        // dump($id);
        $data=Goodslist::where('id',$id)->find();
        // dump($data);
        //商品介绍 json数据转为数组
        $data_attr['goods_attr']=json_decode($data['goods_attr'],true);
        // 缩略图
        $goodsimage=\app\common\model\GoodsImages::where('goods_id',$id)->find();
        // dump($goodsimage);
        //查询商品规格
        $specgoods=\app\common\model\SpecGoods::where('goods_id',$id)->select();
        // dump($specgoods);
        // array_column($specgoods->toArray(),'value_ids')返回输入数组中某个单一列的值
        // implode('_',array_column($specgoods->toArray(),'value_ids'))返回一个由数组元素组合成的字符串
        // explode('_',implode(array_column($specgoods->toArray(),'value_ids')))使用一个字符串分割另一个字符串，并返回由字符串组成的数组。
        // array_unique()函数用于移除数组中重复的值
        $goodSpecId=array_unique(explode('_',implode('_',array_column($specgoods->toArray(),'value_ids'))));
        // dump($goodSpecId);
        $goodSpec=\app\common\model\Spec::where('id','in',$goodSpecId)->select();
        // dump($goodSpec);
        $res=[];
        foreach($goodSpec as $v){
            $res[$v['type_id']]=[
                'type_id'=>$v['type_id'],
                'spec_value'=>[]
            ];
        }
        foreach($goodSpec as $v){
            $res[$v['type_id']]['spec_value'][]=$v;
        }
        // dump($res);
        $values_id_map=[];
        foreach($specgoods as $v){
            // dump($v);
            $values_id_map[$v['value_ids']]=[
                'id'=>$v['id'],
                'price'=>$v['price']
            ];
        }
        $values_id_map=json_encode($values_id_map);
        // dump($values_id_map);
        return $this->fetch('item',['data'=>$data,'data_attr'=>$data_attr['goods_attr'],'goodsimage'=>$goodsimage,'goodSpec'=>$res,'values_id_map'=>$values_id_map]);
    }
}
